/**
 * @param {number[][]} intervals
 * @return {number[][]}
 */

var merge = function (intervals) {
    let len = intervals.length
    let res = []
    intervals = intervals.sort((a, b) => {
        if (a[0] < b[0]) {
            return -1
        } else {
            return 1
        }
    })
    // 处理区间的边界情况
    if (!intervals || !intervals.length) {
        return []
    }
    res.push(intervals[0])
    // 按照顺序，逐个遍历所有区间
    for (let i = 1; i < len; i++) {
        // 取结果数组中的最后一个元素，作为当前对比的参考
        prev = res[res.length - 1]
        // 若满足交错关系（前一个的尾部 >= 下一个的头部）
        if (prev[1] >= intervals[i][0]) {
            prev[1] = Math.max(prev[1], intervals[i][1])
        } else {
            res.push(intervals[i])
        }
    }
    return res
};
merge([[1, 4], [0, 4]])